############################################################################################
#                            Fonctions de gestion des Evenements                           #
############################################################################################

# Requête permettant d'ajouter un événement
sub addEvent{
  my $req = $dbd->prepare("INSERT INTO evenement (lieu,dateEvenement,nombreParticipant) VALUES ('$_[0]', str_to_date('$_[1]','%d/%m/%Y'), '$_[2]');");
  $req->execute;
  my $id = $dbd->{q{mysql_insertid}};
  $req->finish; 

  $req = $dbd->prepare("INSERT INTO utilise (idEvenement,nomJeu) VALUES ($id,'$_[3]');");
  $req->execute;
  $req->finish; 
}

# Requête permettant de mettre à jour un événement
sub updateEvent {
  my @quotedArgs;
  my $i=0;
  foreach my $arg (@_) {
    $quotedArgs[$i++]=quotemeta($arg);
  }
 
  my $date = convertDate($_[1]);
  my $req = <<"SQL";
    UPDATE evenement
        SET dateEvenement = '$date',
            lieu = '$quotedArgs[2]'
        WHERE idEvenement = '$_[0]';
SQL
  my $prep = $dbd->prepare($req);
  $prep->execute;
  $prep->finish;
}

# Requête permettant de rechercher des événements
sub searchEvent{
  my @quotedArgs;
  my $i=0;
  foreach my $arg (@_) {
    $quotedArgs[$i++]=quotemeta($arg);
  }

  my $date = convertDate($_[1]) . '%';
  my $req;

  if($_[2] ne ""){
  $req = <<"SQL";
  SELECT * from evenement
    where evenement.lieu like '%$quotedArgs[0]%'
      and evenement.dateEvenement like '%$date'
      and evenement.idEvenement = '$_[2]';
SQL
  }
  else{
    $req = <<"SQL";
    SELECT * from evenement
    where evenement.lieu like '%$quotedArgs[0]%'
      and evenement.dateEvenement like '%$date';
SQL
  }
  my $hashEvents = $dbd->selectall_hashref($req, 'idEvenement');
  return $hashEvents;
}

# Requête permettant de récupérer les jeux utilisés par un événement
sub selectGame{
  my $hashGames = $dbd->selectall_hashref("SELECT * from utilise,jeu WHERE utilise.idEvenement = '$_[0]' AND jeu.nomJeu = utilise.nomJeu;", 'nomJeu');
  return $hashGames;
}

# Requête permettant de récupérer les commentaires d'un événement
sub selectCommit{
  my $hashGames = $dbd->selectall_hashref("SELECT * from commente,adherent WHERE commente.idEvenement = '$_[0]' AND adherent.idAdherent = commente.idAdherent;", 'idAdherent');
  return $hashGames;
}

# Requête permettant de supprimer un jeu des jeux utiliser par evenement
sub deleteGameFromEvent{
  my $req = $dbd->prepare("DELETE FROM utilise WHERE nomJeu = '$_[0]' AND idEvenement = $_[1];");
  $req->execute;
  $req->finish;
}

# Requête permettant de récupérer les participants d'un événement
sub selectParticipant{
  my $req;
  $req = <<"SQL";
  SELECT * FROM participe,adherent,eleve,personne
    WHERE participe.idEvenement = '$_[0]'
      AND adherent.idAdherent = participe.idAdherent
      AND eleve.login = adherent.login
      AND personne.idPersonne = eleve.idPersonne;
SQL
  my $hashEvents = $dbd->selectall_hashref($req, 'idAdherent');
  return $hashEvents;
}

# Requête permettant d'annuler un événement
sub deleteEvent{
  my $req = $dbd->prepare("DELETE FROM evenement WHERE idEvenement = '$_[0]';");
  $req->execute;
  $req->finish;
}

sub commitEvent{
  my @quotedArgs;
  my $i=0;
  foreach my $arg (@_) {
    $quotedArgs[$i++]=quotemeta($arg);
  }

  my $req = $dbd->prepare("INSERT INTO commente (idEvenement, idAdherent, commentaire) VALUES ($_[0], $_[1], '$quotedArgs[2]');");
  $req->execute;
  $req->finish; 
}

# Requête permettant d'ajouter un participant à un événement
sub participEvent{
  my @quotedArgs;
  my $i=0;
  foreach my $arg (@_) {
    $quotedArgs[$i++]=quotemeta($arg);
  }

  my $req = $dbd->prepare("INSERT INTO participe (idEvenement, idAdherent) VALUES ($_[0], $_[1]);");
  $req->execute;
  $req->finish;  
}

# Requête permettant d'ajouter un jeu à événement
sub addGameToEvent{
  my @quotedArgs;
  my $i=0;
  foreach my $arg (@_) {
    $quotedArgs[$i++]=quotemeta($arg);
  }

  my $req = $dbd->prepare("INSERT INTO utilise (idEvenement, nomJeu) VALUES ($_[0], '$quotedArgs[1]');");
  $req->execute;
  $req->finish;    
}

# Requête permettant de connaitre si un jeu est utilisé par un événement
sub getGameOfEvent{
  my $hashGames = $dbd->selectall_arrayref("SELECT * from utilise WHERE utilise.idEvenement = '$_[0]' AND utilise.nomJeu = '$_[1]';");
  return $$hashGames[0][0]; 
}

1;